#ifndef ICHARACTER_HH
#define ICHARACTER_HH

#include <string>
#include <vector>

// 前向声明Item结构体
struct Item;

// 角色基类接口
class ICharacter {
public:
    // 虚析构函数,用于正确清理派生类
    virtual ~ICharacter() = default;

    // 默认构造、拷贝构造和赋值运算符
    ICharacter() = default;
    ICharacter(const ICharacter& other) = default;
    ICharacter& operator=(const ICharacter& other) = default;

    // 基本角色行为
    virtual bool isAlive() const = 0;                    // 判断角色是否存活
    virtual bool takeDamage(unsigned damage) = 0;        // 受到伤害
    virtual bool attack(ICharacter& target) = 0;         // 攻击目标

    // 获取角色属性
    virtual std::string getName() const = 0;             // 获取名称
    virtual std::string getDescription() const = 0;      // 获取描述
    virtual unsigned getHealth() const = 0;              // 获取生命值
    virtual unsigned getAttack() const = 0;              // 获取攻击力
    virtual unsigned getDefense() const = 0;             // 获取防御力
    virtual std::string toString() const = 0;            // 转为字符串表示

    // 背包管理
    virtual void addToInventory(Item* item) = 0;         // 添加物品到背包
    virtual void displayInventory() const = 0;           // 显示背包内容

    // 显示角色信息
    virtual void display() const = 0;                    // 显示角色状态

};

#endif // ICHARACTER_HH